local Vec = {
    x = 1,
    y = 2
}
local mt = {
    __add = function(a, b)
        return {
            x = a.x + b.x,
            y = a.y + b.y
        }
    end,
    __tostring = function(v)
        return string.format("(%d,%d)", v.x, v.y)
    end
}

setmetatable(Vec, mt)
local v2 = {
    x = 3,
    y = 4
}
setmetatable(v2, mt)
local newV = Vec + v2
print(newV)
